package com.solution.admin.coupon.dao.impl;

import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Repository;

import com.solution.admin.coupon.dao.CouponDao;
import com.solution.admin.coupon.entity.CouponEntity;
import com.solution.common.dao.impl.BaseDaoImpl;
import com.solution.common.page.PageBean;
import com.solution.common.page.PageParam;

/**
 * 优惠券信息DAO实现
 * 
 * @author xu_cc
 * @date 2017-11-16 11:11:20
 */
@Repository
public class CouponDaoImpl extends BaseDaoImpl<CouponEntity> implements CouponDao {

    /**
     * 保存优惠券信息信息
     * 
     * @param couponEntity
     * @return
     * @author xu_cc
     * @date 2017-11-16 11:11:20
     */
    @Override
    public long saveCoupon(CouponEntity couponEntity) {
        return super.insert(couponEntity);
    }

    /**
     * 分页查询优惠券信息信息
     * 
     * @param pageParam
     *            分页对象
     * @param coupon
     *            分页参数
     * @return PageBean 分页参数及数据
     * @author xu_cc
     * @date 2017-11-16 11:11:20
     */
    public PageBean listCouponPage(PageParam pageParam, Map<String, Object> param) {
        return super.listPage(pageParam, param);
    }

    /**
     * 更新优惠券信息
     * 
     * @param couponEntity
     * @return
     * @author xu_cc
     * @date 2017-11-16 11:11:20
     */
    @Override
    public int updateCoupon(CouponEntity couponEntity) {
        return super.update(couponEntity);
    }

    /**
     * 删除优惠券信息
     * 
     * @param couponId
     * @return
     * @author xu_cc
     * @date 2017-11-16 11:11:20
     */
    public int deleteCouponById(Long id) {
        return super.deleteById(id);
    }

    /**
     * 根据条件查询优惠券信息
     * 
     * @param param
     * @return
     * @author xu_cc
     * @date 2017-11-16 11:11:20
     */
    @Override
    public List<CouponEntity> listCoupon(Map<String, Object> param) {
        return super.listBy(param);
    }

    /**
     * 用于下拉列表（活动赠优惠券）
     * 
     * @param param
     * @return List<CouponEntity>
     * @author xu_cc
     * @throws Exception
     *             exception
     * @Date 创建时间：2017年11月21日 下午4:39:04
     */
    public List<CouponEntity> listByPromotionCombo(Map<String, Object> param) {
        return getSessionTemplate().selectList(getStatement("listByPromotionCombo"), param);
    }

    /**
     * 查询可发放优惠券用户
     * @param pageParam
     * @param paramMap
     * @return
     * @author xkl
     * @date 2017年12月23日 下午2:05:52
     */
	@Override
	public PageBean listCouponCustomerPage(PageParam pageParam, Map<String, Object> paramMap) {
		return super.listPage(pageParam, paramMap, "listCouponCustomerPage", "countCouponCustomerPage");
	}
    
    /**
     * 查询客户未使用的优惠券
     * @param param
     * @return
     * @author lilp
     */
	public List<CouponEntity> listUserCoupon(Map<String, Object> param){
		return getSessionTemplate().selectList(getStatement("listUserCoupon"), param);
	}

	/**
	 * 查询所有可发放优惠券用户
	 * @param paramMap
	 * @return
	 * @author xkl
	 * @date 2018年1月13日 上午10:48:26
	 */
	@Override
	public List<Map<String,Object>> listCouponCustomer(Map<String, Object> paramMap) {
		return getSessionTemplate().selectList(getStatement("listCouponCustomer"), paramMap);
	}
}
